package IOAndProperties.IO;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
    将a路径的文件1.jpg复制到b路径

    步骤：
        1、创建一个字节输入流对象，构造方法传入读取文件的路径
        2、创建一个字节输出流对象，构造方法传入写入文件的路径
        3、使用字节输入流中的方法read，读取文件
        4、使用字节输出流中的方法write，写入文件
        5、释放资源

    a路径/Users/ivy/Documents/java/mydir/1.jpg
    b路径/Users/ivy/Documents/java/mydir/2.jpg

*/
public class FileCopyTest01 {
    public static void main(String[] args) throws IOException {
        //创建字节输入流
        FileInputStream fis = new FileInputStream(new File("/Users/ivy/Documents/java/mydir/1.jpg"));
        //创建字节输出流
        FileOutputStream fos = new FileOutputStream("/Users/ivy/Documents/java/mydir/2.jpg");

        int count = 0;
        byte[] bytes = new byte[10240];

        //使用一次读取一个字节的方式
        //此方法太慢，需要很多次循环，不建议使用
     /*
     while ((count = fis.read()) != -1) {
            fos.write(count);
        }
      */
        //复制开始时间
        long start = System.currentTimeMillis();
        //使用缓冲数组
        while ((count = fis.read(bytes)) != -1) {
            fos.write(bytes, 0, count);
        }

        //复制结束时间
        long end = System.currentTimeMillis();
        //输出复制所需时间
        System.out.println("复制文件耗时" + (end - start) + "毫秒");
        //释放资源
        //先关闭输出流，再关闭输入流
        //写入完毕则肯定读取完毕
        fos.close();
        fis.close();
    }
}
